C语言基础知识:字符数组用字符串赋值

问题提出:char a[10];  怎么给这个数组赋值呢?

字符数组用字符串赋值的三种可行形式:

1、定义的时候直接用字符串赋值
     char a[10]="hello";

【注意】不能先定义再给它赋值,如char a[10]; a[10]="hello";这样是错误的,一个字符怎么能容纳一个字符串?况且a[10]也是不存在的!再如char a[10]; a="hello";//这种情况容易出现,a虽然是指针,但是它已经指向在堆栈中分配的10个字符空间,现在这个情况a又指向数据区中的hello常量,这里的指针a出现混乱,不允许!

2、对数组中字符逐个赋值
     char a[10]={'h','e','l','l','o'};

3、利用strcpy
     char a[10]; strcpy(a, "hello");

【注意】不能使用关系运算符“==”来比较两个字符串,只能用strcmp() 函数来处理。

注意:C语言的运算符根本无法操作字符串

C语言中把字符串当作数组来处理因此,对字符串的限制方式和对数组的一样,特别是,它们都不能用C语言的运算符进行复制和比较操作。

直接尝试对字符串进行复制或比较操作会失败。例如,假定str1和str2有如下声明:

char str1[10], str2[10];

利用=运算符来把字符串复制到字符数组中是不可能的:

str1 = "abc";     /*** WRONG ***/

str2 = str1;       /*** WRONG ***/

C语言把这些语句解释为一个指针与另一个指针之间的(非法的)赋值运算。但是,使用=初始化字符数组是合法的:

char str1[10] = "abc";

这是因为在声明中,=不是赋值运算符。

试图使用关系运算符或判等运算符来比较字符串是合法的,但不会产生预期的结果:

if (str1==str2) ...    /*** WRONG ***/

这条语句把str1和str2作为指针来进行比较,而不是比较两个数组的内容。因为str1和str2有不同的地址,所以表达式str1 == str2的值一定为0。

补充

字符数组的初始化

如:char  c_write_data[100] = {'\0'}

字符指针的初始化与赋值

如:char  *carrige_return = "\n";

 

 

 

 

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本资源是以压缩包的形式的, 里面是一个 “TXT”的文档, 文档中 有“百度云” 分享的链接, 这本书太大,上传不上来,所以以这样的方式上传。永久有效,欢迎下载。 本书作者: 张晶 高洪涛(编著); 出版社: 电子工业出版社 内容简介: 本书由浅入深,全面、系统地介绍了C语言的编程技术。全书分6篇共13章,主要内容包括:C语言概述;C语言的数据类型,运算符,表达式和输入/输出函数;选择结构设计;循环结构设计;数组;字符串;函数;指针;新的数据类型;联合,枚举和位域;预处理;文件操作;综合实例应用。随书所附光盘包含本书配套实例源文件、赠送的C语言学习资料和教学视频。本书适合所有想全面学习C语言的编程人员及C语言爱好者阅读。 章节目录: 第1篇 C语言开发基础 第1章 扎马步认识C语言 1.1 程序设计语言 1.1.1 程序设计语言的发展 1.1.2 C语言的发展 1.1.3 C语言的特点 1.2 结构化程序设计 1.2.1 程序设计的概念 1.2.2 程序的灵魂—算法 1.2.3 程序设计三剑客—基本结构 1.2.4 实现“结构化程序设计”的方法 1.3 C语言程序设计的特点 1.3.1 C程序实例 1.3.2 C程序的结构特点 1.3.3 C语言中的名字规则—标识符 1.4 C程序变成EXE文件的过程编译、连接和执行 1.5 编译和运行C程序的一般步骤 1.5.1 使用Turbo C 2.0开发 1.5.2 使用Visual C 6.0开发 1.6 小结 1.7 习题 第2章 地形:C语言的血液数据类型、运算符、表达式和输入/输出函数 2.1 不可以改变的数据常量 2.1.1 常量的定义 2.1.2 进化版的常量—符号常量 2.2 可以改变的数据变量 2.2.1 变量的定义 2.2.2 给变量起名字—变量的命名规则 2.2.3 变量的出生和成长—初始化和赋值 2.2.4 变量的寿命—作用域 2.2.5 使用extern声明变量 2.3 C语言的细胞数据类型 2.3.1 整型(int) 2.3.2 实型(float) 2.3.3 字符型(char) 2.4 运算符和表达式 2.4.1 运算符和表达式 2.4.2 赋值运算符和赋值表达式 2.4.3 算术运算符和算术表达式 2.4.4 关系运算符和关系表达式 2.4.5 逻辑运算符和逻辑表达式 2.4.6 条件运算符和条件表达式 2.4.7 逗号运算符和逗号表达式 2.4.8 运算符的优先级 2.5 不同类型数据之间的转换 2.5.1 隐式转换 2.5.2 显式转换 2.6 数据的输入Input 2.6.1 使用scanf()函数实现数据输入 2.6.2 一个字符的输入函数—getchar() 2.7 数据的输出Output 2.7.1 使用printf()函数实现数据格式输出 2.7.2 使用putchar()函数实现字符输出 2.8 顺序结构程序设计举例 2.9 本章知识点综合应用 案例一 案例二 案例三 2.10 小结 2.11 习题 第2篇 C语言编程入门 第3章 迎战:选择结构设计 3.1 入门选择结构简介 3.2 选择结构设计的实现—if语句 3.2.1 if结构语法 3.2.2 if结构程序实例 3.3 选择结构设计实现—if…else法 3.3.1 if…else结构语法 3.3.2 if…else结构程序实例 3.4 选择结构设计—多重if法 3.4.1 多重if结构的语法格式 3.4.2 多重if结构程序实例 3.5 选择结构设计—if嵌套法 3.5.1 if嵌套结构语法 3.5.2 if和else配对问题 3.5.3 if嵌套结构程序实例 3.6 选择结构设计—switch法 3.6.1 switch结构语法 3.6.2 switch语句的注意事项 3.6.3 switch的执行过程 3.6.4 switch结构程序实例 3.7 switch和多重if的比较 3.8 选择结构程序设计举例 3.9 本章知识点综合应用 案例一 案例二 案例三 3.10 小结 3.11 习题
“新概念C语言”突破了以往任何一种语言教材的旧的模式,将教学内容分为入门篇和提高篇两个篇章。在入门篇中只引进程序设计必要的语法现象,达到快速入门。激发兴趣的目的。在入门篇和提高篇之间插一个强化上机实验周,巩固学习内容。在提高篇中完成完整的语法、算法、程序设计思想等教学目的的学习任务。由于学生对语言已具有了初步的了解并掌握了最基本的语法和程序设计思想,能设计较简单的程序,所以在提高篇的学习中,不论对灵活语法的学习和掌握,还是对程序设计思想的掌握都更加容易,从而可以较容易达到教学目标。 第一部分 入门篇 1 第1章 C语言的产生及其工作流程 3 1.1 C语言的产生 3 1.2 程序和程序设计 3 1.2.1 C程序 3 1.2.2 程序设计 4 习题 4 第2章 C程序设计的初步知识 5 2.1 简单C程序的构成和格式 5 2.2 常量、变量和标识符 6 2.2.1 标识符 6 2.2.2 常量 7 2.2.3 用定义一个符号名的方法来代表一个常量 7 2.2.4 变量 8 2.3 整型数据 8 2.3.1 整型常量 8 2.3.2 整型变量 8 2.4 实型数据 9 2.4.1 实型常量 9 2.4.2 实型变量 9 2.5 字符型数据 10 2.5.1 字符常量 10 2.5.2 字符串常量 11 2.5.3 字符变量 11 2.6 算术表达式 11 2.6.1 基本的算术运算符 11 2.6.2 运算符的优先级、结合性和算术表达式 12 2.6.3 强制类型转换表达式 13 2.7 赋值表达式 13 2.7.1 赋值运算符和赋值表达式 13 2.7.2 赋值运算中的类型转换 14 习题 15 第3章 顺序结构程序 16 3.1 复合语句和空语句 16 3.1.1 复合语句 16 3.1.2 空语句 16 3.2 程序举例 16 习题 17 第4章 选择结构 19 4.1 关系运算和逻辑运算 19 4.1.1 C语言中的逻辑值 19 4.1.2 关系运算符和关系表达式 19 4.1.3 逻辑运算符和逻辑表达式 20 4.2 if语句和用if语句构成的选择结构 21 习题 22 第5章 循环结构 25 5.1 for语句和用for语句构成的循环结构 25 5.1.1 for语句构成的循环结构 25 5.1.2 for循环的执行过程 25 5.1.3 有关for语句的说明 25 5.2 循环结构的嵌套 27 习题 28 第6章 函数 30 6.1 函数的定义和返回值 30 6.1.1 函数定义的语法 30 6.1.2 函数的返回值 30 6.2 函数的调用 32 6.2.1 函数的调用方式 32 6.2.2 函数调用时的语法要求 32 6.3 函数的说明 33 6.3.1 函数说明的形式 33 6.3.2 函数说明的位置 34 6.4 调用函数和被调用函数之间的数据传递 34 6.5 库函数 36 6.6 数据输入输出及常用库函数 37 6.6.1 printf函数(格式输出函数) 37 6.6.2 scanf函数(格式输入函数) 39 6.6.3 调用putchar和getchar函数输出和输入字符 40 6.7 程序举例 41 习题 43 第7章 数组 45 7.1 一维数组的定义和一维数组元素的引用 45 7.1.1 一维数组的定义 45 7.1.2 一维数组元素的引用 46 7.1.3 一维数组的初始化 46 7.1.4 一维数组的定义和数组元素引用举例 47 7.2 函数之间对一维数组和数组元素的引用 47 7.2.1 数组元素做实参 47 7.2.2 数组名做实参 49 7.3 一维数组应用举例 50 7.4 字符数组 53 7.4.1 字符数组的定义 53 7.4.2 字符数组的初始化 54 7.4.3 字符数组的引用 54 7.4.4 字符串字符串结束标志 55 7.4.5 字符数组的输入输出 56 7.4.6 字符串处理函数 58 7.4.7 字符数组应用举例 60 习题 61 第8章 文件 63 8.1 C语言文件的概念 63 8.2 打开文件 64 8.3 关闭文件 65 8.4 调用getc(fgetc)和putc(fputc)等常用函数进行输入和输出 65 8.5 判断文件结束函数feof 68 习题 69 第二部分 提高篇 71 第9章 算法 73 9.1 算法 73 9.2 结构化程序设计和模块化结构 74 9.2.1 结

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值